Risk and Returns: Time Varying Volatility


Kerry Back

BUSI 721, Fall 2022
JGSB, Rice University

At times, the market is turbulent, and at times it is quite calm.

Daily returns are drawn from a mixture of distributions:
high std dev in turbulent times and low std dev in calm times.
Most outliers occurred in turbulent times
- when std dev was high

Example of a Mixture Distribution

Normal distribution with 0 mean and std dev sometimes =1=1 and sometimes =4=4

import pandas as pd
from scipy.stats import norm

x1 = pd.Series(norm.rvs(0,1,1000))
x2 = pd.Series(norm.rvs(0,4,1000))
x = pd.concat((x1, x2))
x.plot(kind="kde")

Plot of the Example

kde plot of the mixture and a plot of the normal pdf with the same mean and std dev

Data

Compute std dev (volatility) of return in each calendar month

  • High vol one month implies high vol next month
  • High vol one month does not imply high return next month
  • Vol and return are contemporaneously negatively correlated (because vol rises in downturns)

HTML tutorial

Complete Code for the Plot

import numpy as np 
import pandas as pd
from scipy.stats import norm
import matplotlib.pyplot as plt

x1 = pd.Series(norm.rvs(0,1,1000))
x2 = pd.Series(norm.rvs(0,4,1000))
x = pd.concat((x1, x2))

mn = x.mean()
sd = x.std()
grid = np.linspace(mn-3*sd, mn+3*sd, 101)
y = norm.pdf(grid, mn, sd)

_ = x.plot(kind="kde", label="mixture")
_ = plt.plot(grid, y, label="normal")
_ = plt.legend()